import { Entity, Column, PrimaryGeneratedColumn, OneToMany, CreateDateColumn, UpdateDateColumn } from 'typeorm';
import { UserRole } from './user-role.entity';
import { MenuRole } from './menu-role.entity';
import { TimeTransformer } from 'src/utils/TimeTransformer.util';

/**
 * 角色
 */
@Entity('sys_role')
export class Role {
  /**
   * 角色ID
   */
  @PrimaryGeneratedColumn({ comment: '角色ID' })
  roleId: number;

  /**
   * 角色名称
   */
  @Column({ comment: '角色名称' })
  roleName: string;

  /**
   * 角色标识
   */
  @Column({ comment: '角色标识' })
  roleKey: string;

  /**
   * 角色描述
   */
  @Column({ comment: '角色描述' })
  remark: string;

  /**
   * 角色状态
   */
  @Column({ comment: '角色状态', default: true })
  status: boolean;

  /**
   * 用户角色
   */
  @OneToMany(() => UserRole, (userRole) => userRole.role)
  roleUsers: UserRole[];

  /**
   * 角色菜单
   */
  @OneToMany(() => MenuRole, (menuRole) => menuRole.role)
  roleMenus: MenuRole[];

  /**
   * 创建时间
   */
  @CreateDateColumn({ comment: '创建时间', transformer: TimeTransformer })
  createTime: Date;

  /**
   * 更新时间
   */
  @UpdateDateColumn({ comment: '更新时间', transformer: TimeTransformer })
  updateTime: Date;
}
